// 生产环境配置
const merge = require('webpack-merge');
const webpack = require('webpack');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const commonConfig = require('./webpack.common.config.js');

const publicConfig = {
	devtool: 'cheap-module-source-map',
	module: {
		rules: [{
			test: /\.css$/,
			use: ExtractTextPlugin.extract({
				fallback: "style-loader",
				use: ["css-loader?modules&localIdentName=[local]-[hash:base64:5]", "postcss-loader"]
			})
		}]
	},
	plugins: [
		new CleanWebpackPlugin(['dist/*.*']),
		new UglifyJSPlugin(),
		new webpack.DefinePlugin({
			'process.env': {
				'NODE_ENV': JSON.stringify('production')
			}
		}),
		new ExtractTextPlugin({
			filename: '[name].[contenthash:5].css',
			allChunks: true
		})
	]

};

module.exports = merge(commonConfig, publicConfig); // merge用于合并多个webpack配置文件


// module.exports = {
// 	devtool: 'cheap-module-source-map',
// 	entry: {
// 		app: [
// 			path.join(__dirname, 'src/index.js')
// 		],
// 		vendor: ['react', 'react-router-dom', 'redux', 'react-dom', 'react-redux']
// 	},
// 	output: {
// 		path: path.join(__dirname, './dist'),
// 		filename: '[name].[chunkhash].js',
// 		chunkFilename: '[name].[chunkhash].js'
// 	},
// 	module: {
// 		rules: [{
// 			test: /\.js$/,
// 			use: ['babel-loader'],
// 			include: path.join(__dirname, 'src')
// 		}, {
// 			test: /\.css$/,
// 			use: ExtractTextPlugin.extract({
// 				fallback: "style-loader",
// 				use: "css-loader"
// 			})
// 		}, {
// 			test: /\.(png|jpg|gif)$/,
// 			use: [{
// 				loader: 'url-loader',
// 				options: {
// 					limit: 8192
// 				}
// 			}]
// 		}]
// 	},
// 	plugins: [
// 		new HtmlWebpackPlugin({
// 			filename: 'index.html',
// 			template: path.join(__dirname, 'src/index.html')
// 		}),
// 		new webpack.optimize.CommonsChunkPlugin({
// 			name: 'vendor'
// 		}),
// 		new webpack.optimize.CommonsChunkPlugin({ // 让打包出来的vendor名字不会再改变
// 			name: 'runtime'
// 		}),
// 		new webpack.DefinePlugin({ // 指定环境为生产环境 // 这时你引用的库就只会向你提供生产必须的代码  从而有效减少代码体积
// 			'process.env': {
// 				'NODE_ENV': JSON.stringify('production')
// 			}
// 		}),
// 		new ExtractTextPlugin({ // 单独抽取css
// 			filename: '[name].[contenthash:5].css',
// 			allChunks: true
// 		}),
// 		new CleanWebpackPlugin(['dist']),
// 		new UglifyJSPlugin() // 文件压缩
// 	],
// 
// 	resolve: {
// 		alias: {
// 			pages: path.join(__dirname, 'src/pages'),
// 			component: path.join(__dirname, 'src/component'),
// 			router: path.join(__dirname, 'src/router'),
// 			actions: path.join(__dirname, 'src/redux/actions'),
// 			reducers: path.join(__dirname, 'src/redux/reducers')
// 		}
// 	}
// };
//
